/*
 * 本类作用：mina框架:工具类
 * 
 * 作者：袁小杰
 * 博客：http://blog.csdn.net/undoner
 * GIT：https://git.oschina.net/undoner
 * QQ：15137281
 * 
 */
package com.smforj.ssm.mina.codec;
 

import java.nio.charset.Charset;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.mina.core.buffer.IoBuffer;

public class MsgUtils { 
	/**
	 * 整型转byte[]
	 * */
	public static byte[] intToByte(int i) {
		byte[] abyte = new byte[4];
		abyte[0] = (byte) (0xff & i);
		abyte[1] = (byte) ((0xff00 & i) >> 8);
		abyte[2] = (byte) ((0xff0000 & i) >> 16);
		abyte[3] = (byte) ((0xff000000 & i) >> 24);
		return abyte;
	}

	/**
	 * byte[]转整型
	 * */
	public static int bytesToInt(byte[] bytes) {
		int addr = bytes[0] & 0xFF;
		addr |= ((bytes[1] << 8) & 0xFF00);
		addr |= ((bytes[2] << 16) & 0xFF0000);
		addr |= ((bytes[3] << 24) & 0xFF000000);
		return addr;
	}
	/**  
	* 将byte[]转换成string    
	* @param butBuffer  
	*/  
	public static String bytesToString(byte [] b)   
	{   
	       StringBuffer stringBuffer = new StringBuffer();   
	       for (int i = 0; i < b.length; i++)   
	       {   
	           stringBuffer.append((char) b [i]);   
	       }   
	       return stringBuffer.toString();   
	}
	
	/**  
	* 将string转换成   byte[] 
	* @param butBuffer  
	*/  
	public static byte[] stringToBytes(String str)   
	{    
		char[] cs = str.toCharArray();
		byte[] bytes = new byte[cs.length];
	    for(int i=0;i< cs.length;i++)
	    	bytes[i] = (byte)cs[i];
	    	
	    return bytes;
	}
	  
	/**  
	* 将string转换成IoBuffer
	* @param str  
	*/  
	public static IoBuffer stringToIoBuffer(String str)   
	{   
	  
	       byte bt[] = str.getBytes();   
	  
	       IoBuffer ioBuffer = IoBuffer.allocate(bt.length);   
	       ioBuffer.put(bt, 0, bt.length);   
	       ioBuffer.flip();   
	       return ioBuffer;   
	}   
	/**  
	* 将byte转换成IoBuffer    
	* @param str  
	*/  
	public static IoBuffer byteToIoBuffer(byte [] bt,int length)   
	{   
	  
	       IoBuffer ioBuffer = IoBuffer.allocate(length);   
	       ioBuffer.put(bt, 0, length);   
	       ioBuffer.flip();   
	       return ioBuffer;   
	}   
	/**  
	* 将IoBuffer转换成byte    
	* @param str  
	*/  
	public static byte [] ioBufferToByte(Object message)   
	{   
	      if (!(message instanceof IoBuffer))   
	      {   
	          return null;   
	      }   
	      IoBuffer ioBuffer = (IoBuffer)message;   
	      byte[] b = new byte[ioBuffer.limit()];   
	      ioBuffer.get(b);   
	      return b;   
	}   
	/**  
	* 将IoBuffer转换成string    
	* @param butBuffer  
	*/  
	public static String ioBufferToString(Object message)   
	{   
	      if (!(message instanceof IoBuffer))   
	      {   
	        return "";   
	      }   
	      IoBuffer ioBuffer = (IoBuffer) message;   
	      byte[] b = new byte [ioBuffer.limit()];   
	      ioBuffer.get(b);   
	      StringBuffer stringBuffer = new StringBuffer();   
	  
	      for (int i = 0; i < b.length; i++)   
	      {    
	       stringBuffer.append((char) b [i]);   
	      }   
	       return stringBuffer.toString();   
	}
	
	/***
	 * 检测消息是否合法
	 * 消息格式由一个消息头和消息体组成，消息头占用180b，内容包括标志，版本，设备类型，设备ID，请求类型，消息体长度等。
	 * 需根据字符串内容做判断时不区分大小写，如果内容占不满规定长度时在尾部填补空字符 ”\0”
	 * @param msg
	 * @return
	 */
	public static boolean CheckMsg(String msg)
	{  
		return CheckMsg(msg.getBytes(Charset.forName("UTF-8")));
	}
	/***
	 * 检测消息是否合法
	 * 消息格式由一个消息头和消息体组成，消息头占用180b，内容包括标志，版本，设备类型，设备ID，请求类型，消息体长度等。
	 * 需根据字符串内容做判断时不区分大小写，如果内容占不满规定长度时在尾部填补空字符 ”\0”
	 * @param msg
	 * @return
	 */
	public static boolean CheckMsg(byte[] bmsg)
	{ 
		if(bmsg == null || bmsg.length < 180)
			return false;
		
		
		return false;
	}
	/****
	 * 是否是数字
	 * @param str
	 * @return
	 * @date 2017-9-23 下午7:35:21
	 */
	public static boolean isNumeric(String str){ 
		   Pattern pattern = Pattern.compile("[0-9]*"); 
		   Matcher isNum = pattern.matcher(str);
		   if( !isNum.matches() ){
		       return false; 
		   } 
		   return true; 
		}
	
	public static void main(String[] arg0)
	{  
	}

}
